import {HTTP}from '../util/http.js'//引用HTTP这个类
//Classic继承HTTP,HTTP本身也是一个类，继承的话不需要实例化
class ClassicModel extends HTTP{
  //加载最新一期的期刊
    getLatest(sCallback){
      this.request({
        url:'classic/latest',
        success:(res)=>{
         sCallback(res)//回传回去
         this._setLatestIndex(res.index)//完成缓存应该存入classicModel回调函数中
         let key = this._getKey(res.index)//从_getKey拿到index
         wx.setStorageSync(key,res)//写入缓存
        }
      })
    }

    /*getPrevious()和getNext()可以合并成一个方法
    缓存中寻找 or API写入缓存中,所有的期刊在缓存中有一个key 确定key(最好编写一个私有的方法)是一个期刊哪一个期刊
    getClassic()是寻找上一期或者下一期的
    */
    getClassic(index,nextOrPrevious,sCallback){
      //判断是next还是previous
      let key = nextOrPrevious == 'next'?this._getKey(index+1):this._getKey(index-1)
      //去缓存中获取key
      let classic = wx.getStorageSync(key)
      //判断缓存中是否有key,如果没有找到就需要像服务器发送请求，需要把当前的请求数写入缓存 
      if(!classic){
        this.request({
          url:'classic/'+index+'/'+nextOrPrevious,
          success:(res)=>{
           wx.setStorageSync(this._getKey(res.index),res)//服务器加载的classic加入缓存中
           sCallback(res)//回传回去
          }
        })
      }
      //如果在缓存中找到classic就返回回去
      else{
        sCallback(classic)
      }
 
    }

    // 接受当前的期刊号index
    isFirst(index) {
      return index == 1? true:false//判断当前期刊号是否为1是的话就是第一期
    }

    isLatest(index) {
       let latestIndex= this._getLatestIndex()
       return latestIndex == index?true:false
    }
   
    _setLatestIndex(index) {
      //同步存入缓存两个参数 键名(可以自定义) 键值
       wx.setStorageSync('latest',index)
    }

    _getLatestIndex(){//读取缓存
      let index = wx.getStorageSync('latest')
      return index
    }
    
    //定义私有方法确定产生key，需要传入index
   _getKey(index){
     let key = 'classic-' + index
     return key
   }

}

export {ClassicModel}//需要输入
